package cn;

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

import java.util.List;

/**
 * 我的第一个爬虫项目，入门案例
 */
public class ReptileMain implements PageProcessor {
    //声明爬虫的site对象，设置参数，重试次数，爬取时间间隔
    private Site site = Site.me().setRetryTimes(2).setTimeOut(2000).setSleepTime(2000);
    //定义url正则表达式
    private String regex = "http://www.dangjian.com/[\\w_/.shtml]*";

    /**
     * 爬虫爬取内容
     * @param page
     */
    public void process(Page page) {

        Document document = page.getHtml().getDocument();

        System.out.println(document.title());
        //获取超链接   使用正则表达式   解析出  符合条件的uml
        //对超链接做补全操作
        List<String> all = page.getHtml().links().regex(regex).all();
        System.out.println("url:"+all);
       //把超链接放到爬虫的队列中，自动爬虫，把网址的数据全部爬取，结束，，不结束。。。
        page.addTargetRequests(all);

        //当前url

        // 页面：  解析出url   http://dangjian.com/   不需要解析页面
 try {
     //需要解析url+页面
     //获取CurrChnlCls  值
     Elements currChnlCls = document.getElementsByClass("CurrChnlCls");
     //处理，不是全部信息都需要发送
     Element title_tex = document.getElementById("title_tex");
     Element time_tex = document.getElementById("time_tex");
     Element time_ly = document.getElementById("time_ly");
     Elements trs_editor = document.getElementsByClass("TRS_Editor");
     Elements bj = document.getElementsByClass("bj");
     //把信息发送到数据持久化组件  DataDao
     page.putField("currChnlCls", currChnlCls.text());
     page.putField("title_tex", title_tex.text());
     page.putField("time_tex", time_tex.text());
     page.putField("time_ly", time_ly.text());
     page.putField("trs_editor", trs_editor);
     page.putField("bj", bj.text());

 }catch (Exception e){

 }




    }

    public Site getSite() {
        return site;
    }
    /**
     * 第一个爬虫的入口
     * @param args
     */
    public static void main(String[] args) {
        //声明一个爬虫的解析组件
        ReptileMain reptileMain = new ReptileMain();
        //声明一个爬虫的导演Spider
        Spider spider = Spider.create(reptileMain);
        //设置参数
        spider.addUrl("http://www.dangjian.com");
        //设置线程
        spider.thread(5);
        //设置爬虫的数据持久化
        spider.addPipeline(new DataDao());
        spider.run();

    }
}
